import asyncio
from pyppeteer import launch
from pyquery import PyQuery as pq


async def main():
    browser = await launch()  # launch 方法会新建一个 Browser 对象，
    page = await browser.newPage()  # browser 调用 newPage  方法相当于浏览器中新建了一个选项卡，同时新建了一个 Page 对象，这时候新启动了一个选项卡，但是还未访问任何页面，浏览器依然是空白
    await page.goto('https://dynamic2.scrape.center/')  # Page 对象调用了 goto 方法就相当于在浏览器中输入了这个 URL，浏览器跳转到了对应的页面进行加载。
    await page.waitForSelector('.item .name')  # Page 对象调用 waitForSelector 方法，传入选择器，如果加载出来了，立即返回，否则会持续等待直到超时
    doc = pq(await page.content())
    names = [item.text() for item in doc('.item .name').items()]
    print('Names:', names)
    await browser.close()


# 使用asyncio库的异步执行 详见：https://kaiwu.lagou.com/course/courseInfo.htm?courseId=46#/detail/pc?id=1677
asyncio.get_event_loop().run_until_complete(main())
